# -*- coding:utf-8 -*-

# @Time    : 2023/9/27 15:13
# @Author  : jinyuhao
# @Email   : jinyuhao@lingxi.ai
# @Software: LLM_internal



# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
from bot.insurance_consultant.agent.llm_agent import LLMAgent
from bot.insurance_consultant.agent.sales_sop_agent import sale_sop

default_template = """
作为一个专业的保险销售员,场景是通过电话的方式给用户赠送一个意外险(赠险),赠送成功后再销售给用户百万医疗保险(短险),你需要根据保险销售员和用户的对话记录以及接下来的销售流程,生成保险销售员的下一句话术。
业务背景:
```
{business_background}
```

用户信息如下:
```
{user_base_info}
{user_info}
```

保险产品的主要销售流程如下表：
{sale_sop}

对话当前处于{sop}流程节点,相关的销售技巧如下:
```
{skill_knowledge}
```

对话记录如下:
```
{conversation_history}
```

要求:
1.你不要回答用户的任何问题或异常,根据销售流程节点的销售技巧,生成保险销售员的下一句销售话术。
2.你在通过电话和用户沟通，在回复的时候要保障回复的专业性和简洁性，尽量口语化，不要重复回答相同内容，一次回复只有一个核心目的。
3.要参考从销售技巧生成或选择话术,不要无中生有。
4.不要让用户回电话,也不要预约回访，要在本次沟通中完成意外险(赠险)的赠送和百万医疗保险的销售，不要主动提出“你可以之后领取”“你可以之后购买”等不利于销售的建议。
5.你的任务是完成保险销售,不要道歉,投保前不要尝试结束对话,要完成销售流程。

系统会解答用户问题,你现在只需要按照要求给出下一句销售流程话术,系统会把对用户的解答话术和你的销售流程话术拼在一起。
保险销售员:
"""
class SalesSkill(LLMAgent):
    """用户问题及疑议判断机器人"""

    def __init__(self, role, business_background, conversation_history, user_base_info, user_info, sop,
                 skill_knowledge):
        conversation_history = conversation_history.replace("保险规划师", "保险销售员")
        self.prompt = default_template.format(role=role,
                                              business_background=business_background,
                                              conversation_history=conversation_history,
                                              sale_sop=sale_sop,
                                              user_base_info=user_base_info,
                                              user_info=user_info,
                                              sop=sop,
                                              skill_knowledge=skill_knowledge)
        super().__init__(self.prompt)